java对接阿里云实名认证接口

您所在的位置:网站首页 实名认证身份证 图片 java对接阿里云实名认证接口

java对接阿里云实名认证接口

2024-06-09 13:59| 来源: 网络整理| 查看: 265

今天在工作中用到了对用户进行实名认证的需求,完成需求后借着摸鱼的空闲,把实名认证进行总结,方便刚入行的小白学习与讨论。

认证四要素:姓名、身份证号、人像身份证照片、国徽身份证照片

目录

实名认证地址获取

代码

返回参数实体类

实名认证工具类  CardVerifyUtil(实名认证工具类)

Http请求工具类   HttpUtils(直接搬的文档里的)

使用

开发文档中的一些图片

总结

实名认证地址获取

 有免费的50次认证!

提示:以下是本篇文章正文内容,下面案例可供参考

代码 返回参数实体类

代码如下(示例):CardVerify  (接受实名认证的返回参数)

import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * 实名认证返回参数实体类 */ @Data @AllArgsConstructor @NoArgsConstructor public class CardVerify { //状态码 private String code; //状态信息 private String message; //性别 private String sex; //身份证号 private String idCardNo; //民族 private String nation; //姓名 private String name; //出生年月日 private String birth; //住址 private String address; } 实名认证工具类  CardVerifyUtil(实名认证工具类) import com.alibaba.fastjson.JSON; import org.apache.http.HttpResponse; import org.apache.http.util.EntityUtils; import java.util.HashMap; import java.util.Map; import java.util.UUID; /** * 实名认证工具类 */ public class CardVerifyUtil { /** * * @param frontImg 人脸面照片转base64得出的字符串 * @param backImg 国徽面照片转base64得出的字符串 * @return */ public static CardVerify cardVerify(String frontImg,String backImg) { String host = "https://miitangs14.market.alicloudapi.com";//调用地址 String path = "/v1/tools/ocr/idCard"; //调用路径 String method = "POST"; String appcode = "**************************"; //阿里云中自己的APPCode Map headers = new HashMap(); //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105 headers.put("Authorization", "APPCODE " + appcode); //根据API的要求,定义相对应的Content-Type headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); //需要给X-Ca-Nonce的值生成随机字符串,每次请求不能相同 headers.put("X-Ca-Nonce", UUID.randomUUID().toString()); Map querys = new HashMap(); Map bodys = new HashMap(); bodys.put("backImg",backImg); bodys.put("frontImg", frontImg); bodys.put("reqNo", "miitangtest01"); bodys.put("userLicenseNo", "userLicenseNo"); try { /** * 重要提示如下: * HttpUtils请从 * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java * 下载 * * 相应的依赖请参照 * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml */ HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys); //获取response的body String s = EntityUtils.toString(response.getEntity()); CardVerify cardVerify = JSON.parseObject(s, CardVerify.class); return cardVerify; } catch (Exception e) { CardVerify cardVerify = new CardVerify(); cardVerify.setCode("10000"); return cardVerify; } } } Http请求工具类   HttpUtils(直接搬的文档里的) import org.apache.commons.lang.StringUtils; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.clienthods.HttpDelete; import org.apache.http.clienthods.HttpGet; import org.apache.http.clienthods.HttpPost; import org.apache.http.clienthods.HttpPut; import org.apache.http.conn.ClientConnectionManager; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.entity.ByteArrayEntity; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * 实名认证工具类 */ public class HttpUtils { /** * get * * @param host * @param path * @param method * @param headers * @param querys * @return * @throws Exception */ public static HttpResponse doGet(String host, String path, String method, Map headers, Map querys) throws Exception { HttpClient httpClient = wrapClient(host); HttpGet request = new HttpGet(buildUrl(host, path, querys)); for (Map.Entry e : headers.entrySet()) { request.addHeader(e.getKey(), e.getValue()); } return httpClient.execute(request); } /** * post form * * @param host * @param path * @param method * @param headers * @param querys * @param bodys * @return * @throws Exception */ public static HttpResponse doPost(String host, String path, String method, Map headers, Map querys, Map bodys) throws Exception { HttpClient httpClient = wrapClient(host); HttpPost request = new HttpPost(buildUrl(host, path, querys)); for (Map.Entry e : headers.entrySet()) { request.addHeader(e.getKey(), e.getValue()); } if (bodys != null) { List nameValuePairList = new ArrayList(); for (String key : bodys.keySet()) { nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key))); } UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8"); formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8"); request.setEntity(formEntity); } return httpClient.execute(request); } /** * Post String * * @param host * @param path * @param method * @param headers * @param querys * @param body * @return * @throws Exception */ public static HttpResponse doPost(String host, String path, String method, Map headers, Map querys, String body) throws Exception { HttpClient httpClient = wrapClient(host); HttpPost request = new HttpPost(buildUrl(host, path, querys)); for (Map.Entry e : headers.entrySet()) { request.addHeader(e.getKey(), e.getValue()); } if (StringUtils.isNotBlank(body)) { request.setEntity(new StringEntity(body, "utf-8")); } return httpClient.execute(request); } /** * Post stream * * @param host * @param path * @param method * @param headers * @param querys * @param body * @return * @throws Exception */ public static HttpResponse doPost(String host, String path, String method, Map headers, Map querys, byte[] body) throws Exception { HttpClient httpClient = wrapClient(host); HttpPost request = new HttpPost(buildUrl(host, path, querys)); for (Map.Entry e : headers.entrySet()) { request.addHeader(e.getKey(), e.getValue()); } if (body != null) { request.setEntity(new ByteArrayEntity(body)); } return httpClient.execute(request); } /** * Put String * @param host * @param path * @param method * @param headers * @param querys * @param body * @return * @throws Exception */ public static HttpResponse doPut(String host, String path, String method, Map headers, Map querys, String body) throws Exception { HttpClient httpClient = wrapClient(host); HttpPut request = new HttpPut(buildUrl(host, path, querys)); for (Map.Entry e : headers.entrySet()) { request.addHeader(e.getKey(), e.getValue()); } if (StringUtils.isNotBlank(body)) { request.setEntity(new StringEntity(body, "utf-8")); } return httpClient.execute(request); } /** * Put stream * @param host * @param path * @param method * @param headers * @param querys * @param body * @return * @throws Exception */ public static HttpResponse doPut(String host, String path, String method, Map headers, Map querys, byte[] body) throws Exception { HttpClient httpClient = wrapClient(host); HttpPut request = new HttpPut(buildUrl(host, path, querys)); for (Map.Entry e : headers.entrySet()) { request.addHeader(e.getKey(), e.getValue()); } if (body != null) { request.setEntity(new ByteArrayEntity(body)); } return httpClient.execute(request); } /** * Delete * * @param host * @param path * @param method * @param headers * @param querys * @return * @throws Exception */ public static HttpResponse doDelete(String host, String path, String method, Map headers, Map querys) throws Exception { HttpClient httpClient = wrapClient(host); HttpDelete request = new HttpDelete(buildUrl(host, path, querys)); for (Map.Entry e : headers.entrySet()) { request.addHeader(e.getKey(), e.getValue()); } return httpClient.execute(request); } private static String buildUrl(String host, String path, Map querys) throws UnsupportedEncodingException { StringBuilder sbUrl = new StringBuilder(); sbUrl.append(host); if (!StringUtils.isBlank(path)) { sbUrl.append(path); } if (null != querys) { StringBuilder sbQuery = new StringBuilder(); for (Map.Entry query : querys.entrySet()) { if (0 < sbQuery.length()) { sbQuery.append("&"); } if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) { sbQuery.append(query.getValue()); } if (!StringUtils.isBlank(query.getKey())) { sbQuery.append(query.getKey()); if (!StringUtils.isBlank(query.getValue())) { sbQuery.append("="); sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8")); } } } if (0 < sbQuery.length()) { sbUrl.append("?").append(sbQuery); } } return sbUrl.toString(); } private static HttpClient wrapClient(String host) { HttpClient httpClient = new DefaultHttpClient(); if (host.startsWith("https://")) { sslClient(httpClient); } return httpClient; } private static void sslClient(HttpClient httpClient) { try { SSLContext ctx = SSLContext.getInstance("TLS"); X509TrustManager tm = new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] xcs, String str) { } public void checkServerTrusted(X509Certificate[] xcs, String str) { } }; ctx.init(null, new TrustManager[] { tm }, null); SSLSocketFactory ssf = new SSLSocketFactory(ctx); ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ClientConnectionManager ccm = httpClient.getConnectionManager(); SchemeRegistry registry = ccm.getSchemeRegistry(); registry.register(new Scheme("https", 443, ssf)); } catch (KeyManagementException ex) { throw new RuntimeException(ex); } catch (NoSuchAlgorithmException ex) { throw new RuntimeException(ex); } } } 使用 //实名认证接口 @PostMapping("/cardVerify") public RestResponse cardVerify(@RequestBody JSONObject jsonObject,HttpServletRequest request) { //获取token String token = request.getHeader("Authorization"); //根据token获取用户名 String username = JwtUtil.getUsername(token); //根据username查询用户详情 User user = userService.findByUsername(username); //获取前段传值 String name = jsonObject.getStr("name");//姓名 String card = jsonObject.getStr("card");//身份证号 String frontImg = jsonObject.getStr("frontImg");//前照片 String backImg = jsonObject.getStr("backImg");//后照片 //调用验证接口 CardVerify cardVerify = CardVerifyUtil.cardVerify(frontImg, backImg); //判断code switch (cardVerify.getCode()) { case "FP00000": //如果输入的身份证和姓名与身份证照片不一致 if (!name.equals(cardVerify.getName())) { System.out.println(cardVerify.getMessage()); return RestResponse.fail("输入的姓名与身份证上的姓名不一致"); } if (!card.equals(cardVerify.getIdCardNo())) { System.out.println(cardVerify.getMessage()); return RestResponse.fail("输入的身份证号与身份证上的不一致"); } user.setCard(cardVerify.getIdCardNo()); user.setName(cardVerify.getName()); userService.revised(user); System.out.println(cardVerify.getMessage()); return RestResponse.success("认证成功"); case "10000": System.out.println(cardVerify.getMessage()); return RestResponse.fail("系统后端错误,请联系管理员"); case "KYC2010": System.out.println(cardVerify.getMessage()); return RestResponse.fail("上传的图片不合格"); case "FP03333": System.out.println(cardVerify.getMessage()); return RestResponse.fail("请按要求输入或采集上传准确信息"); case "FP09008": System.out.println(cardVerify.getMessage()); return RestResponse.fail("处理失败,请求参数验证失败,请联系管理员"); default: break; } System.out.println(cardVerify.getMessage()); return RestResponse.success("认证成功"); } 开发文档中的一些图片

总结

总结:以上就是今天要讲的内容,本文仅仅简单介绍了阿里云实名认证的使用,如有侵权,请联系删帖!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3